%{
	#include<stdio.h>
	#include<ctype.h>
	#include<stdlib.h>
	#ifndef YYSTYPE
	#define YYSTYPE double
	#endif
	int yylex();
	extern int yyparse();
	FILE* yyin;
	void yyerror(char const*); 
%}
%token NUMBER
%left '+' '-'
%left '*' '/'
%right UMINUS

%%
lines	:	lines expr '\n'		{printf("%f\n",$2);}
		|	lines '\n'
		|
		;
expr	:	expr'+'expr		{$$=$1+$3;}
		|	expr'-'expr	{$$=$1-$3;}
		|	expr'*'expr	{$$=$1*$3;}
		|	expr'/'expr	{$$=$1/$3;}
		|	'('expr')'	{$$=$2;}
		|	'-'expr %prec UMINUS {$$=-$2;}
		|	NUMBER
		;

%%
int main(){
	yyin=stdin;
	do{
		yyparse();
	}while(!feof(yyin));
	return 0;
}
int yylex(){
	int t;
	while(1)
	{
		t=getchar();
		if(t==' '||t=='\t'){}
		else if(isdigit(t))
		{
			yylval=0;
			while(isdigit(t))
			{
				yylval=yylval*10+t-'0';
				t=getchar();
			}
			ungetc(t,stdin);
			return NUMBER;
		}
		else
		{
			return t;
		}	
	}
}
void yyerror(char const*s){
	fprintf(stderr,"%s\n",s);
}
